﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    public class PessoaAtestadoCAT
    {
        #region Variaveis Membro
        private int _idAtestadoCAT;
        private PessoaAtestado _atestadoCAT;
        private PessoaAtestado _atestado;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdAtestadoCAT
        {
            get { return _idAtestadoCAT; }
            set { _idAtestadoCAT = value; }
        }

        public PessoaAtestado Atestado
        {
            get { return this._atestado; }
            set { this._atestado = value; }
        }

        public PessoaAtestado AtestadoCAT
        {
            get { return this._atestadoCAT; }
            set { this._atestadoCAT = value; }
        }
        #endregion

        #region Construtores
        public PessoaAtestadoCAT()
        {
            _context = new GENTEEntities();
        }
        #endregion

        #region Metodos Publicos
        public List<PessoaAtestadoCAT> SelecionarAtestados(int pIdAtestadoCAT)
        {
            try
            {
                List<PessoaAtestadoCAT> listPessoaAtestadoCAT = new List<PessoaAtestadoCAT>();

                //var consulta = from pessoaatestadocat in _context.tab_pessoa_atestado_cat
                //               where pessoaatestadocat.tab_pessoa_atestado.id_atestado == pIdAtestadoCAT
                //               select new
                //               {
                //                   pessoaatestadocat.id_atestado_cat,
                //                   atestado = pessoaatestadocat.tab_pessoa_atestado1.id_atestado,
                //                   atestadoCAT = pessoaatestadocat.tab_pessoa_atestado.id_atestado
                //               };

                //var listConsulta = consulta.ToList();

                //foreach (var list in listConsulta)
                //{
                //    PessoaAtestadoCAT pessoaatestadoCAT = new PessoaAtestadoCAT();
                //    pessoaatestadoCAT.IdAtestadoCAT = list.id_atestado_cat;
                //    pessoaatestadoCAT.Atestado = new PessoaAtestado(list.atestado);
                //    pessoaatestadoCAT.AtestadoCAT = new PessoaAtestado(list.atestadoCAT);

                //    listPessoaAtestadoCAT.Add(pessoaatestadoCAT);
                //}

                return listPessoaAtestadoCAT;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<PessoaAtestadoCAT> SelecionarAtestadosCAT(int pIdAtestado)
        {
            try
            {
                List<PessoaAtestadoCAT> listPessoaAtestadoCAT = new List<PessoaAtestadoCAT>();

                //var consulta = from pessoaatestadocat in _context.tab_pessoa_atestado_cat
                //               where pessoaatestadocat.tab_pessoa_atestado1.id_atestado == pIdAtestado
                //               select new
                //               {
                //                   pessoaatestadocat.id_atestado_cat,
                //                   atestado = pessoaatestadocat.tab_pessoa_atestado1.id_atestado,
                //                   atestadoCAT = pessoaatestadocat.tab_pessoa_atestado.id_atestado
                //               };

                //var listConsulta = consulta.ToList();

                //foreach (var list in listConsulta)
                //{
                //    PessoaAtestadoCAT pessoaatestadoCAT = new PessoaAtestadoCAT();
                //    pessoaatestadoCAT.IdAtestadoCAT = list.id_atestado_cat;
                //    pessoaatestadoCAT.Atestado = new PessoaAtestado(list.atestado);
                //    pessoaatestadoCAT.AtestadoCAT = new PessoaAtestado(list.atestadoCAT);

                //    listPessoaAtestadoCAT.Add(pessoaatestadoCAT);
                //}

                return listPessoaAtestadoCAT;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private bool VerificaAssociacaoAtestados()
        {
            try
            {
                bool _verificar = false;

                //var consulta = from pessoaatestadoCAT in _context.tab_pessoa_atestado_cat
                //               where pessoaatestadoCAT.tab_pessoa_atestado1.id_atestado == this._atestado.IdAtestado
                //               select new
                //               {
                //                   pessoaatestadoCAT.id_atestado_cat
                //               };

                //if (consulta.ToList().Count == 0) _verificar = true;

                return _verificar;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private bool VerificaCamposCadastro()
        {
            try
            {
                bool _verificar = false;

                if (!VerificaAssociacaoAtestados())
                    throw new Exception("Um atestado pode conter apenas uma CAT associada. Operação cancelada!");

                _verificar = true;
                return _verificar;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Salvar()
        {
            try
            {
                if (VerificaCamposCadastro())
                {
                    //if (this._idAtestadoCAT == 0)
                    //{
                    //    tab_pessoa_atestado_cat tabPessoaAtestadoCAT = new tab_pessoa_atestado_cat();

                    //    tabPessoaAtestadoCAT.tab_pessoa_atestado1Reference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa_atestado", "id_atestado", this.Atestado.IdAtestado);
                    //    tabPessoaAtestadoCAT.tab_pessoa_atestadoReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa_atestado", "id_atestado", this.AtestadoCAT.IdAtestado);

                    //    _context.AddTotab_pessoa_atestado_cat(tabPessoaAtestadoCAT);
                    //    _context.SaveChanges();
                    //}
                    //else
                    //{
                    //    tab_pessoa_atestado_cat tabPessoaAtestadoCAT = (from pessoaatestadocat in _context.tab_pessoa_atestado_cat
                    //                                                    where pessoaatestadocat.id_atestado_cat == this._idAtestadoCAT
                    //                                                    select pessoaatestadocat).First();

                    //    tabPessoaAtestadoCAT.tab_pessoa_atestado1Reference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa_atestado", "id_atestado", this.Atestado.IdAtestado);
                    //    tabPessoaAtestadoCAT.tab_pessoa_atestadoReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa_atestado", "id_atestado", this.AtestadoCAT.IdAtestado);

                    //    _context.SaveChanges();
                    //}
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Excluir()
        {
            try
            {
                //var consulta = from pessoaatestadoCAT in _context.tab_pessoa_atestado_cat
                //               where pessoaatestadoCAT.id_atestado_cat == this._idAtestadoCAT
                //               select pessoaatestadoCAT;

                //var listConsulta = consulta.ToList();

                //foreach (var list in listConsulta)
                //{
                //    _context.DeleteObject(list);
                //    _context.SaveChanges();
                //}
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion



    }
}
